
package com.yuan.model;

import com.yuan.control.CheckControl;
import com.yuan.prefence.FileConstants;
import com.yuan.prefence.PreferenceKeys;
import com.yuan.prefence.UrlConstants;
import com.yuan.unit.FileUtils;
import com.yuan.unit.HttpUtils;
import com.yuan.unit.JsonUtils;

import android.content.Context;
import android.text.TextUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * 考勤表 entity. @author MyEclipse Persistence Tools
 */

@SuppressWarnings("serial")
public class M上班考勤表 implements java.io.Serializable {

    // Fields

    private String 日期 = "";
    private String 序号 = "";
    private String 所属队室 = "";
    private String 职工姓名 = "";
    private String 出勤标示 = "上班打卡";
    private Double 经度 = 0.0;
    private Double 纬度 = 0.0;
    private String 位置 = "";
    private String 备注 = "上班打卡正常";
    private static M上班考勤表 sInstance;

    public static M上班考勤表 getInstance() {
        if (sInstance == null) {
            synchronized (M上班考勤表.class) {
                if (sInstance == null) {
                    sInstance = new M上班考勤表();
                }
            }
        }
        return sInstance;
    }

    public void setFromObject(Object mObject) {
        sInstance = (M上班考勤表) mObject;
    }

    public void setFromMap(Map<?, ?> map) {
        try {
            this.日期 = JsonUtils.getMap0(map.get("备注").toString()).get(PreferenceKeys.CHECKINTIME)
                    .toString();
            this.序号 = (String) map.get("序号");
            this.所属队室 = (String) map.get("所属队室");
            this.职工姓名 = (String) map.get("职工姓名");
            this.出勤标示 = (String) map.get("出勤标示");
            this.经度 = (Double) map.get("经度");
            this.纬度 = (Double) map.get("纬度");
            this.位置 = (String) map.get("位置");
            this.备注 = map.get("备注").toString();
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    // Constructors

    /** default constructor */
    private M上班考勤表() {
    }

    /** full constructor */
    public M上班考勤表(String 日期, String 序号, String 所属队室, String 职工姓名, String 出勤标示, Double 经度,
            Double 纬度,
            String 位置, String 备注) {
        this.日期 = 日期;
        this.序号 = 序号;
        this.所属队室 = 所属队室;
        this.职工姓名 = 职工姓名;
        this.出勤标示 = 出勤标示;
        this.经度 = 经度;
        this.纬度 = 纬度;
        this.位置 = 位置;
        this.备注 = 备注;
    }

    public String get日期() {
        return this.日期;
    }

    public void set日期(String 日期) {
        this.日期 = 日期;
    }

    public String get序号() {
        return this.序号;
    }

    public void set序号(String 序号) {
        this.序号 = 序号;
    }

    public String get所属队室() {
        return this.所属队室;
    }

    public void set所属队室(String 所属队室) {
        this.所属队室 = 所属队室;
    }

    public String get职工姓名() {
        return this.职工姓名;
    }

    public void set职工姓名(String 职工姓名) {
        this.职工姓名 = 职工姓名;
    }

    public String get出勤标示() {
        return this.出勤标示;
    }

    public void set出勤标示(String 出勤标示) {
        this.出勤标示 = 出勤标示;
    }

    public Double get经度() {
        return this.经度;
    }

    public void set经度(Double 经度) {
        this.经度 = 经度;
    }

    public Double get纬度() {
        return this.纬度;
    }

    public void set纬度(Double 纬度) {
        this.纬度 = 纬度;
    }

    public String get位置() {
        return this.位置;
    }

    public void set位置(String 位置) {
        this.位置 = 位置;
    }

    public String get备注() {
        return this.备注;
    }

    public void set备注(String 备注) {
        this.备注 = 备注;
    }

    public boolean checkIN(Context mContext) {
        if (TextUtils.isEmpty(序号) || TextUtils.isEmpty(位置))
        {
            return false;
        }
        if (经度 - 0.0 < 0.00001 || 纬度 - 0.0 < 0.00001)
        {
            return false;
        }
        String url = String.format(UrlConstants.CHECKINURL, 序号, 纬度, 经度, 位置, 备注, 出勤标示, 日期);
        try {
            HttpUtils.getUrlContent(mContext, url, "UTF-8");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return isCheckedFromNet(mContext);
    }

    public boolean isCheckedFromNet(Context mContext) {
        String str = null;
        if (TextUtils.isEmpty(序号))
        {
            CheckControl.setCheckedInToday(false);
        }
        String url = String.format(UrlConstants.ISCHECKINEDDAY, 序号);
        try {
            str = HttpUtils.getUrlContent(mContext, url, "UTF-8");
            HashMap<?, ?> mHashMap = JsonUtils.getMap0(str);
            setFromMap(mHashMap);
            FileUtils.Serializable2File(this, FileConstants.SERIALIZABLE_上班考勤);
            CheckControl.setCheckedInToday(true);
            CheckControl.init上班M考勤表();
            return true;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if ("尚未签到".equals(str))
        {
            CheckControl.setCheckedInToday(false);
            return false;
        }
        return false;
    }
}
